package InterpreterPattern;

/**
 * @version: java version 1.8
 * @Author: Zheng
 * @description:
 * @date: 2022-08-16 22:27
 */
public class InterpreterPatternDemo {
    // 规则 Robert 和 John 是男性
    public static Expression getMaleExpression(){
        Expression robert=new TerminalExpression("Robert");
        Expression john = new TerminalExpression("John");
        return new OrExperssion(robert,john);
    }
    // 规则：julie是一个已婚女性
    public static Expression getMarriedWomanExpression(){
        Expression julie = new TerminalExpression("Julie");
        Expression married = new TerminalExpression("Married");
        return new AndExpression(julie,married);
    }

    public static void main(String[] args) {
        Expression isMale=getMaleExpression();
        Expression isMarriedWoman=getMarriedWomanExpression();

        System.out.println("John is male?"+isMale.interpret("John"));
        System.out.println("Julie is a married women?"+isMarriedWoman.interpret("Married Julie"));
    }
}
